import axios from "axios";
import serverConfig from "./config";
import { ElMessage } from "element-plus";
import { useStoreTemplate } from "@renderer/store/modules/template";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();

// 创建 axios 请求实例
const serviceAxios = axios.create({
  baseURL: serverConfig.baseURL, // 基础请求地址
  timeout: 10000, // 请求超时设置
  withCredentials: false, // 跨域请求是否需要携带 cookie
});

// 创建请求拦截
serviceAxios.interceptors.request.use(
  (config) => {
    const storeTemplate = useStoreTemplate();
    // 如果开启 token 认证
    // config.headers["Accept-Language"] =
    //   localStorage.getItem("language") || "CN"; //EN/CN/HK
    config.headers["Authorization"] = `Bearer ${storeTemplate.$state.token}`; // 请求头携带 token
    // 设置请求头
    if (!config.headers["content-type"]) {
      // 如果没有设置请求头
      config.headers["content-type"] = "application/json";
    }
    return config;
  },
  (error) => {
    Promise.reject(error);
  }
);

// 创建响应拦截
serviceAxios.interceptors.response.use(
  (res) => {
    let data = res.data;
    // 处理自己的业务逻辑，比如判断 token 是否过期等等
    // 代码块
    return Promise.resolve(data);
  },
  (error) => {
    if (error && error.response) {
      switch (error.response.data.code) {
        case 401:
          const storeTemplate = useStoreTemplate();
          storeTemplate.$state.token = null;
          storeTemplate.$state.userInfo = null;
          router.push("/login");
          // ElMessage.error("您未登录，或者登录已经超时，请先登录！");
          break;
      }
    }
    return Promise.reject(error.response.data);
  }
);
export default serviceAxios;
